package com.mars.admin.modules.goods.service;

import com.mars.admin.modules.goods.entity.GoodsSku;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 商品SKU服务接口
 *
 * @author Mars
 * @version 1.0
 * @date 2025-01-07
 */
public interface GoodsSkuService extends IService<GoodsSku> {

    /**
     * 根据商品ID获取SKU列表
     *
     * @param goodsId 商品ID
     * @return SKU列表
     */
    List<GoodsSku> getSkuByGoodsId(Long goodsId);

    /**
     * 根据SKU编码获取SKU
     *
     * @param skuCode SKU编码
     * @return SKU信息
     */
    GoodsSku getBySkuCode(String skuCode);

    /**
     * 检查SKU编码是否存在
     *
     * @param skuCode SKU编码
     * @param excludeId 排除的ID（用于编辑时检查）
     * @return 是否存在
     */
    boolean existsSkuCode(String skuCode, Long excludeId);

    /**
     * 更新SKU库存
     *
     * @param skuId SKU ID
     * @param quantity 库存变化数量（正数增加，负数减少）
     */
    void updateStock(Long skuId, Integer quantity);

    /**
     * 更新SKU销量
     *
     * @param skuId SKU ID
     * @param quantity 销售数量
     */
    void updateSalesCount(Long skuId, Integer quantity);
} 